﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;
using System.Drawing.Drawing2D;
using BUS;
using DTO;
using System.Diagnostics;
using System.Reflection;
using System.IO;
namespace GPBenhLanh
{
    public partial class frm_Login : DevExpress.XtraEditors.XtraForm
    {
        public frm_Login()
        {
            InitializeComponent();
        }
        private SqlConnection conPQ;

        const int WM_NCHITTEST = 0x84;
        const int HTCLIENT = 0x1;
	    const int HTCAPTION = 0x2;
	 

        protected override void WndProc(ref Message message)
	    {
            base.WndProc(ref message); 
            if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
	                message.Result = (IntPtr)HTCAPTION;
	    }
        frmHeThong frm;
        private void btnDangNhap_Click(object sender, EventArgs e)
        {
            try
            {
                if (KiemTra())
                {   
                    DataTable dt = new DataTable();
                    string sp = "SELECT   "
                        +"	IdNguoiDung			AS Id "
                        +"	, TenNguoiDung		AS LoginName  "
                        +"	, HoTen			AS Name "
                        + "	, '" + luDonVi.EditValue.ToString() + "'			AS MaDonVi "
                        +"	, (SELECT TOP 1 tdv.TenDonVi   "
                        +"	    FROM his.dbo.utb_DM_DonVi  tdv   "
                        +"	    WHERE tdv.MaDonVi = '"+luDonVi.EditValue.ToString()+"')	AS TenDonVi  "
                        +"FROM "
                        + "	PhanQuyen.dbo.fn_ChuongTrinh_NguoiDung(" + hensu.IDChuongTrinh + ")  "
                        +"WHERE "
                        +"	TenNguoiDung = '"+txtTenDN.Text+"' "
                        +"	AND MatKhau = '"+Uit.it_Encryt.Encrytion(txtMatKhau.Text)+"' ";

                    dt = Uit.it_SQL.getDataTable(sp, conPQ);

                    if (dt.Rows.Count > 0)
                    {
                        UserDTO.Id = dt.Rows[0]["Id"].ToString();
                        UserDTO.LoginName = dt.Rows[0]["LoginName"].ToString();
                        UserDTO.Name = dt.Rows[0]["Name"].ToString();
                        UserDTO.MaDonVi = dt.Rows[0]["MaDonVi"].ToString();
                        UserDTO.TenDonVi = dt.Rows[0]["TenDonVi"].ToString();

                        Hide();
                        
                        frm = new frmHeThong();
                        frm.SignOutEven += new frmHeThong.DlgSingOut(frm_SingOutEven);
                       
                        frm.Show();
                        
                    }
                    else
                    {
                        lblThongBao.Text = "Tên đăng nhập hay mật khẩu không đúng!";
                    }
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message.ToString(), "Thông Báo");
            }
        }


        void frm_SingOutEven(object sender, object data)
        {
            int[] arrData = new int[2];
            arrData = (int[])data;
            switch ((int)arrData[0])
            {
                case hensu.OUT:
                    frm.Hide();
                    this.Show();
                    break;
                default://defalt is exit
                    if ((int)arrData[1] == 1)
                    {
                        this.Close();
                    }
                    break;
            }
        }

        private bool KiemTra()
        {
            if (txtTenDN.Text == "")
            {
                txtTenDN.Focus();
                lbThongBao.Text = "Chưa nhập tên đăng nhập .";
                return false;
            }
            if (txtMatKhau.Text == "")
            {
                txtMatKhau.Focus();
                lbThongBao.Text = "Chưa nhập mật khẩu .";
                return false;
            }
            if (luDonVi.EditValue == null)
            {
                luDonVi.Focus();
                lbThongBao.Text = "Chưa chọn khu vực .";
                return false;
            }
            return true;
        }

        private void frm_Login_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.KeyCode == Keys.Enter)
                {
                    btnDangNhap_Click(sender, e);
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("Đăng nhập không thành công \n"
                    + ex.Message.ToString(), "Thông Báo");  
            }
        }

        private void frm_Login_Load(object sender, EventArgs e)
        {
            try
            {               
                m_UpdateChuongTrinh();
                conPQ = GetConnectPQ();
                if (conPQ.State != ConnectionState.Open)
                {
                    MessageBox.Show(hensu.sConnFaile, "Thông Báo");
                    return;
                }               
                int inx = luDonVi.Properties.GetDataSourceRowIndex("MaDV", "PT");
                luDonVi.EditValue = luDonVi.Properties.GetDataSourceValue("MaDV", 1);
                txtTenDN.Select();                
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message.ToString(), "Thông Báo"); 
            }            
        }

        private string GetPQConnString()
        {
            string sConnection = Uit.it_Conn.getConnectString("ConnectPhanQuyen");
            string ConnPQ = axEnCrypt2.DeCrypt(sConnection, Uit.it_Conn.getPasswordString());
            return ConnPQ;
        }

        public SqlConnection GetConnectPQ()
        {
            SqlConnection sqlpk = new SqlConnection();
            string ConnPQ = GetPQConnString();
            sqlpk = Uit.it_Conn.getConnect(ConnPQ);  
            return sqlpk;
        }

        private void frm_Login_Paint(object sender, PaintEventArgs e)
        {
            try
            {
                GraphicsPath graphicpath = new GraphicsPath();
                graphicpath.StartFigure();
                graphicpath.AddArc(0, 0, 25, 25, 180, 90);
                graphicpath.AddLine(25, 0, this.Width - 25, 0);
                graphicpath.AddArc(this.Width - 25, 0, 25, 25, 270, 90);
                graphicpath.AddLine(this.Width, 25, this.Width, this.Height - 25);
                graphicpath.AddArc(this.Width - 25, this.Height - 25, 25, 25, 0, 90);
                graphicpath.AddLine(this.Width - 25, this.Height, 25, this.Height);
                graphicpath.AddArc(0, this.Height - 25, 25, 25, 90, 90);
                graphicpath.CloseFigure();
                this.Region = new Region(graphicpath);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("Đăng nhập không thành công \n"
                    + ex.Message.ToString(), "Thông Báo");
            }
        }

        private void txtTenDN_Leave(object sender, EventArgs e)
        {
            try
            {
                 luDonVi.Properties.DataSource
                    = DonVi_BUS.GetDonViByLoginName(txtTenDN.Text, conPQ);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("Đăng nhập không thành công \n" 
                    + ex.Message.ToString(), "Thông Báo");
            }
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void m_UpdateChuongTrinh()
        {
            string _strFile = Application.StartupPath + "\\Update.exe";
            if (File.Exists(_strFile))
            {
                Process p = new Process();
                p.StartInfo.FileName = _strFile;
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.Arguments = Assembly.GetExecutingAssembly().GetName().Name;
                p.Start();
            }
            else
            {
                XtraMessageBox.Show("Phiên bản chưa có cập nhật tự động.\n "+
                    "Vui lòng liên hệ phòng CNTT để được cập nhật phiên bản mới nhất.");
            }
        }

        private void panel2_Paint(object sender, PaintEventArgs e)
        {

        }

    }
}